-
Notifications
You must be signed in to change notification settings - Fork 91
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Carson Smith - GSoC Submission PR #54
base: master
Are you sure you want to change the base?
Conversation
Thank you for your impressive work. I have been busy but hopefully I'll get to review soon. |
Hi Carson: looking at your project it seems it is 16 commits ahead and 2 commits behind from main branch. can you please check wrt latest version? Also did you run ant test on your updates? Thanks |
Hello! I can have my branch update to the latest version from master. There should be no problems there. As for the testing aspect, I did run as many tests as possible with my changes. I ran most, if not all, of the tests provided along with SPF and made sure they all ran the same. |
thanks. just to double check please run 'ant test' after you get the latest version of the master. this should run all the unit tests for spf. thanks. please let me know once you are done and i can merge. |
This PR is in reference to the Google Summer of Code 2020 Project 'A Restructuring of the Path Constraint Interface'
In total, this pull request compiles all of the progress I have made throughout the months I have worked on my Google Summer of Code 2020 project. What started off as a project that focused on restructuring Path Constraints ultimately ended up focusing on restructuring the system with how those constraints are parsed. The ultimate goal of the project was the same, however, in that it makes it easier for a prospective programmer to come along and add additional constraint types and solvers to SPF.
This pull request essentially includes a full redesign of the PCParser class in the Numeric package, breaking up the parsing of the various types of constraints into a much more dynamic object-oriented system. This is done through the implementation of a Visitor pattern, primarily centered around the new class ProblemGeneralVisitor.java, which uses the visitor pattern to parse the constraints (and the expressions included within those constraints) to a given ProblemGeneral object.
Everything included in this PR has been tested in full with all of the provided tests/examples provided with SPF with the mindset of maintaining existing functionality as best as possible.
This project ended up being a lot more than I expected given the size of the codebase and the amount of work I had to get done and testing I had to do. Eventually, I really felt like all the pieces of the puzzle were coming together in my head, and felt super satisfied with the work I've done. This project really reinforced my understanding of the concepts of Polymorphism and Inheritance on a much deeper level than anything I had learned in school, and the whole concept of the Visitor Pattern was a ton of fun to implement. Figuring out how the system would best work with SPF was probably the best part of all of it.
With all the changes made in the commits below, the code should work identically or nearly identically to the functionality it originally did. I am more than willing to stick around after the conclusion of GSoC to make additional changes and fix any bugs or issues that arise as a consequence of the changes made here.
I finished with most everything I intended to get done in this project with the exception of the ArrayConstraintVisitor and RealArrayContraintVisitor classes, which have some additional refactoring I'd like to do sometime sooner or later. Either way, the functionality should still be the same.